#ifndef _BUILDER_H
#define _BUILDER_H
#include "Product.h"

class Product;
class Builder
{
public:
	Builder(){ m_Product = new Product;}
	virtual ~Builder(){}

	virtual void BuilderPartA() = 0;
	virtual void BuilderPartB() = 0;
	virtual void BuilderPartC() = 0;
	virtual Product* GetProduct() = 0;

protected:
	Product* m_Product;
};

class ConcreteBuilder : public Builder
{
public:
	ConcreteBuilder(){}
	~ConcreteBuilder(){}

	void BuilderPartA();
	void BuilderPartB();
	void BuilderPartC();
	Product* GetProduct();
};

#endif